package com.tsd.system.dao;

import com.tsd.core.vo.PageBean;
import com.tsd.system.entity.SysGroup;
import com.tsd.system.entity.SysGroupExt;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 描述：SysGroupMapper
 *
 * @author Hillpool
 * @date 2019/03/12 12:20:51
 */
public interface SysGroupMapper {

    /**
     * 根据id查询部门
     *
     * @param id
     * @return
     */
    SysGroup selectByPrimaryKey(Long id);

    /**
     * 分页查询部门
     *
     * @param params
     * @param page
     * @return
     */
    List<SysGroupExt> selectByPage(@Param("params") Map<String, Object> params, @Param("page") PageBean page);

    /**
     * 根据id删除部门
     *
     * @param id
     * @return
     */
    int deleteByPrimaryKey(Long id);

    /**
     * 插入部门
     *
     * @param record
     * @return
     */
    int insert(SysGroup record);

    /**
     * 插入部门存在值的字段插入
     *
     * @param record
     * @return
     */
    int insertSelective(SysGroup record);

    /**
     * 更新部门
     *
     * @param record
     * @return
     */
    int updateByPrimaryKey(SysGroup record);

    /**
     * 更新存在值的部门字段
     *
     * @param record
     * @return
     */
    int updateByPrimaryKeySelective(SysGroup record);

    /**
     * 根据sid查询部门
     *
     * @param sid
     * @return
     */
    SysGroupExt selectBySid(String sid);

    /**
     * 根据父级sid查询部门
     *
     * @param parentSid
     * @return
     */
    List<SysGroupExt> selectByParentSid(String parentSid);

    /**
     * 不分页查询部门
     *
     * @param params
     * @return
     */
    List<SysGroupExt> selectByParams(@Param("params") Map<String, Object> params);

    /**
     * 统计父级下个数
     *
     * @param parentSid
     * @return
     */
    int countByParentSid(String parentSid);


    /**
     * 统计某部门下的数量
     *
     * @param parent_sid
     * @param name
     * @return
     */
    int countByParentSidAndName(@Param("parent_sid") String parent_sid, @Param("name") String name);
}
